package modelo.tablero;

import modelo.improvistos.*;


public class Ciudad {

	private int fil;
	private int col;
	private int filImp;
	private int filMeta = -1;
	private Improvisto[][] cuadras;

	public Ciudad(int cantFil, int cantCol){
		fil = cantFil;
		col = cantCol;
		filImp = fil*2-1;
		cuadras = new Improvisto[filImp][cantCol];
		armarCiudad();
	}

	public void armarCiudad(){
		for (int i = 0 ; i < filImp ; i++){
			for (int j = 0 ; j < col ;  j++){
				cuadras[i][j] = new Libre();
			}
		}
	}
	
	public void setImprovistoEn(Improvisto unImprovisto, int nFil, int nCol){
		this.cuadras[nFil][nCol] = unImprovisto;
	}
	
	public void setLlegada(int nFil){
		Llegada meta = new Llegada();
		nFil = nFil % filImp;
		if (nFil % 2 != 0)
			nFil = nFil +1;
		this.cuadras[nFil][col-1] = meta;
		filMeta = nFil;
//		System.out.println(filMeta);
	}
	
	public int getFilMeta(){
		return filMeta;
	}
	
	
	public Improvisto getImprovisto(int nFil, int nCol){
		return cuadras[nFil][nCol];
	}
	
	
	public int getFilas(){
		return fil;
	}

	public int getCols(){
		return col;
	}
	
	public int getFilImp(){
		return filImp;
	}
	
	public void colocarImporvistosRandom (){
		Improvisto[] listaImprovistos=crearObjetosImprovistos();
		int valorDelRandom=0;
		
		for (int i = 0 ; i < filImp ; i++){
			for (int j = 0 ; j < col ;  j++){
				valorDelRandom = (int) Math.floor(Math.random()*16); 
				cuadras[i][j] = listaImprovistos[valorDelRandom];;
			}	
		}
	}
	
	private Improvisto[] crearObjetosImprovistos(){
		//Creo instancias de los improvistos por unica vez
		Desfavorable desfavorable = new Desfavorable();
		Favorable favorable = new Favorable();
		Libre libre = new Libre();
		Piquete piquete= new Piquete();
		Policia policia = new Policia();
		Pozo pozo= new Pozo();
		Transformacion transformacion = new Transformacion();
		Improvisto[] improvistos={libre,libre,libre,desfavorable,libre,favorable,libre,piquete,libre,policia,libre,pozo,libre,transformacion,libre,libre};
		return improvistos;
	}

}
